package cn.ahaoweb.drule.core.compile.provide.hepler;

import cn.ahaoweb.drule.core.compile.provide.ObjectTree;
import cn.ahaoweb.drule.core.compile.structure.DruleBlock;

import java.util.List;

/**
 * @author ahao
 * @datetime 2025/6/4 13:54
 * @description 字段匹配器，用于查看字段是否在某个条件或者结果中使用过。
 */
public interface FieldMatcher {

    /**
     * 条件字段匹配
     *
     * @param when      规则块
     * @param fieldNode 字段节点
     * @return 匹配是否成功
     */
    List<DruleBlock.Condition> matchWhen(DruleBlock.When when, ObjectTree.Node fieldNode);

    /**
     * 结果字段匹配
     *
     * @param then      规则块
     * @param fieldNode 字段节点
     * @return 匹配是否成功
     */
    List<DruleBlock.Action> matchThen(DruleBlock.Then then, ObjectTree.Node fieldNode);

}
